const backtestService = require('../services/backtest');
const fs = require('fs');
const path = require('path');

// 获取回测记录
exports.getBacktests = async (req, res) => {
  try {
    const backtests = await backtestService.getBacktests();
    res.json(backtests);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
};

// 获取单个回测结果
exports.getBacktestById = async (req, res) => {
  try {
    const backtest = await backtestService.getBacktestById(req.params.id);
    if (!backtest) {
      return res.status(404).json({ error: '回测记录不存在' });
    }
    res.json(backtest);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
};

// 创建回测
exports.createBacktest = async (req, res) => {
  try {
    const backtestResult = await backtestService.createBacktest(req.body);
    res.status(201).json(backtestResult);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
};

// 导出回测报告
exports.exportBacktestReport = async (req, res) => {
  try {
    const reportPath = await backtestService.exportBacktestReport(req.params.id);
    res.download(reportPath, 'backtest_report.pdf', (err) => {
      if (err) {
        res.status(500).json({ error: '下载报告失败' });
      }
      // 下载完成后删除临时文件
      fs.unlink(reportPath, (unlinkErr) => {
        if (unlinkErr) console.error('删除临时文件失败:', unlinkErr);
      });
    });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
};